package com.zhupanlin.order.feign;

import com.zhupanlin.order.feign.fallback.ProductFeignClientFallback;
import com.zhupanlin.product.bean.Product;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 描述信息：
 *
 * @author zhupanlin
 * @version 1.0
 * @date 2025/1/24 10:49
 */
@FeignClient(value = "service-product", fallback = ProductFeignClientFallback.class) // Feign 客户端, fallback 进行兜底
public interface ProductFeignClient {

    /**
     * mvc 注解的两套使用逻辑
     * 1.标注在 Controller 上，是接收该请求
     * 2.标注在 FeignClient 上，是发送这样的请求
     * 给 /product/{productId} 的路径发送请求，得到 Product 的结果 
     * @param productId
     */
    @GetMapping("/api/product/{productId}")
    Product getProductById(@PathVariable("productId") Long productId);
    
}